-
Notifications
You must be signed in to change notification settings - Fork 227
conditionally contribute set_error_t(std::exception_ptr) in repeat_* senders
#1799
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Co-authored-by: Eric Niebler <eniebler@boost.org>
|
Thank you for the review, @ericniebler. All of your comments have been addressed, though |
|
/ok to test ac8352c |
|
/ok to test 99cf087 |
|
@ericniebler It's odd that the CI jobs using an older version of GCC fail while the other CI jobs pass. I tested everything with GCC15.2.1 locally. I'm not sure if you have any ideas, but I can probably install an older version of GCC and try to reproduce the failing build locally over the weekend. |
that's business as usual. getting CI to pass with older, less-conforming compilers is often the majority of the work for PRs. i wish things were different. |
|
Two competing compiler issues were found that I'll document for future reference: Firstly, older versions of GCC delete arguments to function signatures in type traits and concepts - at least from compiler errors. For example (note the static_assert(std::same_as<int(char, double), int(double, char)>);This made it incredibly hard to debug a test for completion signatures, as every static_assert to check a subset of the problem involves a function signature that the compiler would erase the arguments of. Secondly, using Should there be further compiler conformance issues in CI, I'll address those, too. |
|
/ok to test 2ccd4b5 |
Currently, the
repeat_family of sender adapters invariantly contributesset_error_t(std::exception_ptr)to its completion signatures, which I first mentioned in this issue. This PR causesrepeat_until,repeat, andrepeat_nto conditionally contributeset_error_t(std::exception_ptr)to the completion signatures. Each of the possible cases (not) to contribute the completion signature are individually tested.It also contains some small corrections that were originally in #1797, until @RobertLeahy informed me that it is possible to detect the
noexcept-ness of aconnectusingSTDEXEC::__receiver_archetype<Env>, wherein I returned to this original goal.This is also my first time working with the meta-programming system in this library, so feedback is welcome.